// 发送邮箱验证码 接口

const db = require('../db.js')

// 引入 bcryptjs进行密码加密
const bcrypt = require('bcryptjs')
// 引入 邮件发送
const nodemailer = require('nodemailer')

exports.post = (req, res) => {
  // console.log(req.body)
  const { email } = req.body
  // console.log(email)
  const transporter = nodemailer.createTransport({
    host: 'smtp.163.com',
    // service: 'qq', // 邮箱类型 例如service:'163'
    secure: true, // 是否使用安全连接，对https协议的
    port: 465, // qq邮件服务所占用的端口
    auth: {
      user: 'q2397436351@163.com', // 开启SMTP的邮箱，发件人
      pass: 'JYCNKSDXFIXJXEQA' // qq授权码
    }
  })
  // 产生随机验证码
  let code = ''
  for (let i = 0; i < 6; i++) {
    code += Math.floor(Math.random() * 10)
  }
  const options = {
    from: 'q2397436351@163.com', // 发送方
    to: email, // 接收方
    subject: '[忘忧日记]', // 邮件主题
    // text: '欢迎注册[忘忧日记]--您的验证码为' + code, // 邮件正文
    html: `<head>
    <base target="_blank" />
    <style type="text/css">::-webkit-scrollbar{ display: none; }</style>
    <style id="cloudAttachStyle" type="text/css">#divNeteaseBigAttach, #divNeteaseBigAttach_bak{display:none;}</style>
    <style id="blockquoteStyle" type="text/css">blockquote{display:none;}</style>
    <style type="text/css">
        body{font-size:14px;font-family:arial,verdana,sans-serif;line-height:1.666;padding:0;margin:0;overflow:auto;white-space:normal;word-wrap:break-word;min-height:100px}
        td, input, button, select, body{font-family:Helvetica, 'Microsoft Yahei', verdana}
        pre {white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;width:95%}
        th,td{font-family:arial,verdana,sans-serif;line-height:1.666}
        img{ border:0}
        header,footer,section,aside,article,nav,hgroup,figure,figcaption{display:block}
        blockquote{margin-right:0px}
    </style>
</head>
<body tabindex="0" role="listitem">
<table width="700" border="0" align="center" cellspacing="0" style="width:700px;">
    <tbody>
    <tr>
        <td>
            <div style="width:700px;margin:0 auto;border-bottom:1px solid #ccc;margin-bottom:30px;">
                <table border="0" cellpadding="0" cellspacing="0" width="700" height="39" style="font:12px Tahoma, Arial, 宋体;">
                    <tbody><tr><td width="210"></td></tr></tbody>
                </table>
            </div>
            <div style="width:680px;padding:0 10px;margin:0 auto;">
                <div style="line-height:1.5;font-size:16px;margin-bottom:25px;color:#4d4d4d;">
                    <strong style="display:block;margin-bottom:15px;">尊敬的用户：<span style="color:#f60;font-size: 18px;"></span>您好！</strong>
                    <strong style="display:block;margin-bottom:15px;">
                        您可能正在进行<span style="color: red">注册账号/修改密码</span>操作，请在验证码输入框中输入：<span style="color:#f60;font-size: 26px">${code}</span>，以完成操作。
                    </strong>
                </div>
                <div style="margin-bottom:30px;">
                    <small style="display:block;margin-bottom:20px;font-size:14px;">
                        <p style="color:#747474;">
                            注意：此操作可能会修改您的密码、登录邮箱或绑定手机。如非本人操作，请及时登录并修改密码以保证帐户安全
                            <br>
                        </p>
                    </small>
                </div>
            </div>
            <div style="width:700px;margin:0 auto;">
                <div style="padding:10px 10px 0;border-top:1px solid #ccc;color:#747474;margin-bottom:20px;line-height:1.3em;font-size:12px;">
                    <p>此为系统邮件，请勿回复<br>
                        请保管好您的邮箱，避免账号被他人盗用
                    </p>
                    <p>来自小龙的警告</p>
                </div>
            </div>
        </td>
    </tr>
    </tbody>
</table>
</body>`
  }
  transporter.sendMail(options, (err, info) => {
    if (err) {
      return res.send(err)
    } else {
      // 加密验证码
      code = bcrypt.hashSync(code, 10)
      // console.log(code)

      // 判断数据库  该邮箱是否注册
      const selEmailSql = `select * from users where email = "${email}"`
      db.query(selEmailSql, (err, results) => {
        if (err) {
          console.log(err + '查询sql语句失败1111')
        } else if (results.length < 1) {
          console.log('查询邮箱失败---数据库里面没有该邮箱')

          // 将  邮箱 和 验证码 加入到数据库
          const addSql = `insert into users (email,code) values ('${email}','${code}')`
          db.query(addSql, (err, results) => {
            if (err) {
              console.log(err)
            } else if (results.affectedRows !== 1) {
              // return res.send({ msg: '添置邮箱失败！', status: 400 })
              console.log('添置邮箱失败1111')
            } else {
              console.log('添置邮箱成功1111')
              return res.send({
                status: 201,
                msg: '添置验证码成功！',
                data: { info, code }
              })
            }
          })
        } else {
          console.log('查询成功---数据库里面有该邮箱')
          // 将  加密验证码 更新到数据库
          const updateCodeSql = `update users set code='${code}' where email='${email}'`
          db.query(updateCodeSql, (err, results) => {
            if (err) {
              console.log(err)
            } else if (results.affectedRows !== 1) {
              // return res.send({ msg: '添置验证码失败！', status: 400 })
              console.log('添置验证码失败')
            }
            return res.send({
              status: 201,
              msg: '添置验证码成功！',
              data: { info, code }
            })
          })
        }
      })
    }
  })
}
